/// <reference types="cypress" />

it('repro-359', () => {
  cy.visit('/app/repro-359')
  cy.contains('#hydration-marker', 'hydrated').should('be.hidden')

  cy.location('search').should('eq', '')
  cy.get('#nuqs-param').should('have.text', 'null')
  cy.get('#nuqs-component').should('have.text', '')
  cy.get('#nuqss-param').should('have.text', 'null')
  cy.get('#nuqss-component').should('have.text', '')

  cy.contains('Component 1 (nuqs)').click()
  cy.wait(100)
  cy.location('search').should('eq', '?param=comp1&component=comp1')
  cy.get('#comp1').should('have.text', 'comp1')
  cy.get('#comp2').should('not.exist')
  cy.get('#nuqs-param').should('have.text', 'comp1')
  cy.get('#nuqs-component').should('have.text', 'comp1')
  cy.get('#nuqss-param').should('have.text', 'comp1')
  cy.get('#nuqss-component').should('have.text', 'comp1')

  cy.contains('Component 2 (nuqs)').click()
  cy.wait(100)
  cy.location('search').should('eq', '?param=comp2&component=comp2')
  cy.get('#comp1').should('not.exist')
  cy.get('#comp2').should('have.text', 'comp2')
  cy.get('#nuqs-param').should('have.text', 'comp2')
  cy.get('#nuqs-component').should('have.text', 'comp2')
  cy.get('#nuqss-param').should('have.text', 'comp2')
  cy.get('#nuqss-component').should('have.text', 'comp2')

  cy.contains('Component 1 (nuq+)').click()
  cy.wait(100)
  cy.location('search').should('eq', '?param=comp1&component=comp1')
  cy.get('#comp1').should('have.text', 'comp1')
  cy.get('#comp2').should('not.exist')
  cy.get('#nuqs-param').should('have.text', 'comp1')
  cy.get('#nuqs-component').should('have.text', 'comp1')
  cy.get('#nuqss-param').should('have.text', 'comp1')
  cy.get('#nuqss-component').should('have.text', 'comp1')

  cy.contains('Component 2 (nuq+)').click()
  cy.wait(100)
  cy.location('search').should('eq', '?param=comp2&component=comp2')
  cy.get('#comp1').should('not.exist')
  cy.get('#comp2').should('have.text', 'comp2')
  cy.get('#nuqs-param').should('have.text', 'comp2')
  cy.get('#nuqs-component').should('have.text', 'comp2')
  cy.get('#nuqss-param').should('have.text', 'comp2')
  cy.get('#nuqss-component').should('have.text', 'comp2')
})
